/*
 * IpcMessageQueue.hpp
 *
 *  Created on: Oct 31, 2013
 *      Author: vladimir
 */

#ifndef IPCMESSAGEQUEUE_HPP_
#define IPCMESSAGEQUEUE_HPP_

#include "IpcTranceiverIface.hpp"

#include <memory>
#include <string>

namespace mq
{

class IpcMessageQueue : public IpcTranceiverIface
{
public:
	explicit IpcMessageQueue( const std::string & name );
	~IpcMessageQueue();

	IpcMessageQueue( IpcMessageQueue&& rhs );
	IpcMessageQueue& operator=( IpcMessageQueue&& rhs );


	void SendMessage(
			const char * data,
			const unsigned int dataLength );
	unsigned int ReceiveMessage(
			char * buffer,
			const unsigned int bufferSize );

private:

	struct Imp;
	std::shared_ptr<Imp> pimpl;

};

} /* namespace mq */

#endif /* IPCMESSAGEQUEUE_HPP_ */
